/* global KEEP */

KEEP.initBack2Top = () => {
  KEEP.utils = {
    ...KEEP.utils,

    back2BottomButton_dom: document.querySelector('.tool-scroll-to-bottom'),

    back2top() {
      const scrollTopTimer = setInterval(function () {
        let top = document.body.scrollTop || document.documentElement.scrollTop
        let speed = top / 2
        if (document.body.scrollTop !== 0) {
          document.body.scrollTop -= speed
        } else {
          document.documentElement.scrollTop -= speed
        }
        if (top === 0) {
          clearInterval(scrollTopTimer)
        }
      }, 50)
    },

    back2Bottom() {
      let scrollHeight = document.body.scrollHeight || document.documentElement.scrollHeight
      let scrollTop = document.body.scrollTop || document.documentElement.scrollTop
      const scrollBottomTimer = setInterval(function () {
        if (!scrollTop) scrollTop = 10
        scrollTop = Math.floor(scrollTop + scrollTop / 2)
        window.scrollTo(0, scrollTop)
        if (scrollTop >= scrollHeight) {
          clearInterval(scrollBottomTimer)
        }
      }, 50)
    },

    initBack2Top() {
      this.back2TopButton_dom.addEventListener('click', () => {
        this.back2top()
      })
    },

    initBack2Bottom() {
      this.back2BottomButton_dom.addEventListener('click', () => {
        this.back2Bottom()
      })
    }
  }

  KEEP.utils.initBack2Top()
  KEEP.utils.initBack2Bottom()
}
